package com.ly.emp.service;

import com.ly.common.core.bean.R;
import com.ly.emp.bean.dto.HubTeamDTO;
import com.ly.emp.entity.EpmBaseRel;
import com.ly.emp.entity.EpmBaseSuitunitOrg;
import com.ly.emp.entity.EpmTeamConversionMode;

import java.util.List;

/**
 * 班组公共服务-service
 *
 * @author luoyun
 * @Date: 2023-05-18
 */
public interface IEmpCommonService {
    //================================================树相关============================================

    /**
     * 获取部门树
     *
     * @return
     */
    R findTree();
    //================================================其它相关============================================

    /**
     * 获取绩效兼职部门
     *
     * @param type: 1负责人  默认绩效兼职
     * @return
     */
    R<List<EpmBaseSuitunitOrg>> getPluraList(String type);

    /**
     * 折算模式
     *
     * @return
     */
    R<List<EpmTeamConversionMode>> getConversionModeList();

    /**
     * 获取班组人员
     *
     * @param type
     * @param orgCode
     * @return
     */
    R<List<EpmBaseRel>> getBaseRelList(String type, String orgCode);

    /**
     * 获取班组人员-内部调用
     *
     * @param entity
     * @return
     */
    EpmBaseRel getBaseRelByParam(EpmBaseRel entity);

    /**
     * 获取班组人员-内部调用
     *
     * @param type："true" 或 null :考核、默认考核  "false":不考核
     * @param orgCode
     * @return
     */
    List<EpmBaseRel> getBaseRelListByOrgCode(String type, String orgCode);

    /**
     * excel下拉框人员列表
     *
     * @param dto
     * @return
     */
    String[] getDropdownPsnNameDatas(HubTeamDTO dto);

    /**
     * 获取权限内的所有班组列表-内部调用
     */
    List<EpmBaseSuitunitOrg> getBaseSuitunitOrgListByRole(List<String> orgList);

    /**
     * 获取部门信息-内部调用
     *
     * @param orgCode
     * @return
     */
    EpmBaseSuitunitOrg getBaseSuitunitOrgByOrgCode(String orgCode);

    /**
     * 集约化组织列表
     *
     * @param orgCode
     * @return
     */
    List<String> getIsIntensificationListByOrgCode(String orgCode);

    /**
     * @param isIntensificationList
     * @return
     */
    List<EpmBaseSuitunitOrg> getBaseSuitunitOrgByOrgCodeList(List<String> isIntensificationList);

    R getBaseRelTree(String type, String orgCode);
}
